﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CBE.Model.Entities;

namespace CBE.Model
{
    public class AdministrarServiciosDataAccess : GenericEntityManagerDataAccess<Servicios, AdministrarServiciosCriteria, AdministrarServiciosView, CBEEntities>
    {

        public AdministrarServiciosDataAccess()
            : base()
        {
            this.RelatedEntitySets.Add("ProductosServicio");
        }

        protected override Servicios ReadEntity(Guid id)
        {
            return ObjectContext.Servicios.
                Include("ProductosServicio").
                Include("ProductosServicio.Productos").
                Include("ProductosServicio.Servicios").
                Where(servicio => servicio.ID_Servicio == id).
                FirstOrDefault();
        }

        public override List<AdministrarServiciosView> Read(AdministrarServiciosCriteria criteria)
        {
            return ObjectContext.Servicios.
                Where(servicio => (String.IsNullOrEmpty(criteria.Codigo) || servicio.Codigo.Contains(criteria.Codigo)) &&
                                 (String.IsNullOrEmpty(criteria.Descripcion) || servicio.Descripcion.Contains(criteria.Descripcion))).
                Select(servicio => new AdministrarServiciosView
                {
                    ID = servicio.ID_Servicio,
                    Codigo = servicio.Codigo,
                    Descripcion = servicio.Descripcion,
                    Duracion = servicio.DuracionAproximada,
                    Precio = servicio.Precio
                }).
                OrderBy(s => s.Codigo).ToList();
        }
    }
}
